/*
 * str.h
 *
 *  Created on: Oct 19, 2024
 *      Author: 35702
 */

#ifndef INC_STR_H_
#define INC_STR_H_




typedef struct  Motor_Config  //弧度表示
{
    __IO unsigned int              w1;            //加速段加速度
    __IO unsigned int              w2;            //减速段减速度
    __IO unsigned int				 V_max;       //最大速度，即匀速运行段速度
    __IO unsigned int				step_count;        //电机走过的总步长或总角度，


    __IO unsigned int			sum_step;    				// 总的步数


    __IO int					ZhuangTai;             //当前电机的状态
    __IO  long					accel_count;     // 上升的计数值C1
    __IO long					decel_lim ;      //减速段的步数
    __IO unsigned int			decel_start;    // 开始减速的步数
    __IO unsigned int			accel_N;       // 加速计数值--脉冲
    __IO unsigned int			MIN_C0;
    volatile unsigned long      step_delay;    //c0的值
    __IO unsigned int			speed_MoRn  ; //默认速度
    __IO unsigned int			sum;    // 脉冲个数累计


    __IO  uint16_t new_step_delay;                            /* 保存新（下）一个延时周期 */
    __IO  uint16_t last_accel_delay ;              /* 加速过程中最后一次延时（脉冲周期） */
    __IO  int32_t step_count_2;                    /* 总移动步数计数器*/
    __IO  int32_t rest ;                           /* 记录new_step_delay中的余数，提高下一步计算的精度 */
    __IO  uint8_t i ;                              /* 定时器使用翻转模式，需要进入两次中断才输出一个完整脉冲 */


    TIM_HandleTypeDef *htim;           /*存放通道数*/
        uint32_t channel;

    // 互斥量
    __IO uint8_t  look;




}Motor_Config_p  ;


extern int a;
/*结构体数组6个存放梯形加减速的结构体数据*/


void Motor_Init();


/*电机初始化将电机的计数值全部归0--*/
void CH1_Motor_PWM(Motor_Config_p * list);



//void set_pw m(float angle,int a);
Motor_Config_p * Get_Motor_1(int motor_num ,unsigned long step,unsigned long accel ,unsigned int decel , unsigned int max_speed ,TIM_HandleTypeDef *htim,uint32_t channel);

#endif /* INC_STR_H_ */









